#ifndef __SCENE_MANAGER_IMP___
#define __SCENE_MANAGER_IMP___

#include "SceneManagerIf.h"

//
//	dynamic data interface used for creating a new scene	
//
class TCOM_API  SceneManager : public ISceneManager
{
public:
	SceneManager();
	virtual	~SceneManager();

	//
	//	each scene will have a global unique instance id
	//	retrieve scene by instance id
	//
	virtual	IScene*	getScene(int nInstanceID);

	//
	//	add a scene by static id and table 
	//	scene will be fully initialized in it loading method
	//
	virtual IScene* addScene(int nStaticID, short type);

	//
	//	remove a scene by its instance id
	//
	virtual bool	rmvScene(int nInstanceID);

protected:
	virtual IScene* createScene(int nStaticID, short type);

	typedef	stdext::hash_map<int, IScene*>	SceneMap;

	SceneMap	m_dsm;

	int			m_nCurrentInstanceID;
};


#endif